/*不定参宏的用法*/

#include <iostream>

void xprintf() // 
{
    
    std::cout << std::endl;
    
}

//C++风格的不定参函数的使用
template<typename T, typename ...Args> // 模板参数 参数包类型
void xprintf(const T &v, Args &&...args) // 右值引用->完美转发
{
    std::cout << v;
    if((sizeof ...(args)) > 0) { //参数个数
        //std::cout << sizeof ...(args) << std::endl;
        xprintf(std::forward<Args>(args)...); //完美转发(左/右 值不变) 此时编译器存在调用0个参数的情况，需要考虑调用无参函数
    }else{
        //std::cout << sizeof ...(args) << std::endl;
        xprintf();
        //std::cout << std::endl;
    }
}

int main()
{
    xprintf("hello");
    xprintf("hello", "你好");

    return 0;
}
//g++ -std=c++11 args.cpp -o args